package com.eastfair.imaster.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.eastfair.annotation.model.EchoVO;
import com.eastfair.core.base.entity.Entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

/**
 * <p>
 * 实体类
 * 公司表-异常表
 * </p>
 *
 * @author ligang
 * @since 2021-08-31
 */
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("com_company_error")
@ApiModel(value = "CompanyError", description = "公司表-异常表")
@AllArgsConstructor
public class CompanyError extends Entity<Long> implements EchoVO {

    private static final long serialVersionUID = 1L;
    @TableField(exist = false)
    private Map<String, Object> echoMap = new HashMap<>();
    /**
     * 项目ID
     */
    @ApiModelProperty(value = "项目ID")
    @TableField(value = "project_id")
    @Excel(name = "项目ID")
    private Long projectId;

    /**
     * 冲突ID
     */
    @ApiModelProperty(value = "冲突ID")
    @TableField(value = "conflict_id")
    @Excel(name = "冲突ID")
    private Long conflictId;

    /**
     * 异常类型
     */
    @ApiModelProperty(value = "异常类型")
    @Size(max = 32, message = "异常类型长度不能超过32")
    @TableField(value = "error_type", condition = LIKE)
    @Excel(name = "异常类型")
    private String errorType;

    /**
     * 异常说明
     */
    @ApiModelProperty(value = "异常说明")
    @Size(max = 255, message = "异常说明长度不能超过255")
    @TableField(value = "error_msg", condition = LIKE)
    @Excel(name = "异常说明")
    private String errorMsg;

    /**
     * 企业是否认证 1是 0否
     */
    @ApiModelProperty(value = "企业是否认证 1是 0否")
    @TableField(value = "is_authentication")
    @Excel(name = "企业是否认证 1是 0否")
    private Integer isAuthentication;

    /**
     * 公司名称
     */
    @ApiModelProperty(value = "公司名称")
    @Size(max = 255, message = "公司名称长度不能超过255")
    @TableField(value = "name", condition = LIKE)
    @Excel(name = "公司名称")
    private String name;

    /**
     * 公司英文名称
     */
    @ApiModelProperty(value = "公司英文名称")
    @Size(max = 255, message = "公司英文名称长度不能超过255")
    @TableField(value = "en_name", condition = LIKE)
    @Excel(name = "公司英文名称")
    private String enName;

    /**
     * 地址
     */
    @ApiModelProperty(value = "地址")
    @Size(max = 200, message = "地址长度不能超过200")
    @TableField(value = "address", condition = LIKE)
    @Excel(name = "地址")
    private String address;

    /**
     * 英文地址
     */
    @ApiModelProperty(value = "英文地址")
    @Size(max = 255, message = "英文地址长度不能超过255")
    @TableField(value = "en_address", condition = LIKE)
    @Excel(name = "英文地址")
    private String enAddress;

    /**
     * 国家ID
     */
    @ApiModelProperty(value = "国家ID")
    @TableField(value = "country_id")
    @Excel(name = "国家ID")
    private Long countryId;

    /**
     * 省份ID
     */
    @ApiModelProperty(value = "省份ID")
    @TableField(value = "province_id")
    @Excel(name = "省份ID")
    private Long provinceId;

    /**
     * 城市ID
     */
    @ApiModelProperty(value = "城市ID")
    @TableField(value = "city_id")
    @Excel(name = "城市ID")
    private Long cityId;

    /**
     * 公司logo
     */
    @ApiModelProperty(value = "公司logo")
    @Size(max = 255, message = "公司logo长度不能超过255")
    @TableField(value = "logo_image", condition = LIKE)
    @Excel(name = "公司logo")
    private String logoImage;

    /**
     * 微信宣传视频
     */
    @ApiModelProperty(value = "微信宣传视频")
    @Size(max = 1024, message = "微信宣传视频长度不能超过1024")
    @TableField(value = "wechat_adverts_video", condition = LIKE)
    @Excel(name = "微信宣传视频")
    private String wechatAdvertsVideo;

    /**
     * 宣传视频
     */
    @ApiModelProperty(value = "宣传视频")
    @Size(max = 1024, message = "宣传视频长度不能超过1024")
    @TableField(value = "adverts_video", condition = LIKE)
    @Excel(name = "宣传视频")
    private String advertsVideo;

    /**
     * 宣传视频缩略图
     */
    @ApiModelProperty(value = "宣传视频缩略图")
    @Size(max = 1024, message = "宣传视频缩略图长度不能超过1024")
    @TableField(value = "adverts_video_image", condition = LIKE)
    @Excel(name = "宣传视频缩略图")
    private String advertsVideoImage;

    /**
     * 宣传图片
     */
    @ApiModelProperty(value = "宣传图片")
    @Size(max = 1024, message = "宣传图片长度不能超过1024")
    @TableField(value = "adverts_image", condition = LIKE)
    @Excel(name = "宣传图片")
    private String advertsImage;

    /**
     * 联系邮箱
     */
    @ApiModelProperty(value = "联系邮箱")
    @Size(max = 255, message = "联系邮箱长度不能超过255")
    @TableField(value = "email", condition = LIKE)
    @Excel(name = "联系邮箱")
    private String email;

    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    @Size(max = 255, message = "联系电话长度不能超过255")
    @TableField(value = "telephone", condition = LIKE)
    @Excel(name = "联系电话")
    private String telephone;

    /**
     * 传真
     */
    @ApiModelProperty(value = "传真")
    @Size(max = 100, message = "传真长度不能超过100")
    @TableField(value = "fax", condition = LIKE)
    @Excel(name = "传真")
    private String fax;

    /**
     * 展商品牌
     */
    @ApiModelProperty(value = "展商品牌")
    @Size(max = 128, message = "展商品牌长度不能超过128")
    @TableField(value = "brand", condition = LIKE)
    @Excel(name = "展商品牌")
    private String brand;

    /**
     * 展商英文品牌
     */
    @ApiModelProperty(value = "展商英文品牌")
    @Size(max = 128, message = "展商英文品牌长度不能超过128")
    @TableField(value = "en_brand", condition = LIKE)
    @Excel(name = "展商英文品牌")
    private String enBrand;

    /**
     * 邮编
     */
    @ApiModelProperty(value = "邮编")
    @Size(max = 64, message = "邮编长度不能超过64")
    @TableField(value = "zip_code", condition = LIKE)
    @Excel(name = "邮编")
    private String zipCode;

    /**
     * 公司规模
     */
    @ApiModelProperty(value = "公司规模")
    @Size(max = 64, message = "公司规模长度不能超过64")
    @TableField(value = "company_scale", condition = LIKE)
    @Excel(name = "公司规模")
    private String companyScale;

    /**
     * 注册资本
     */
    @ApiModelProperty(value = "注册资本")
    @Size(max = 64, message = "注册资本长度不能超过64")
    @TableField(value = "registered_capital", condition = LIKE)
    @Excel(name = "注册资本")
    private String registeredCapital;

    /**
     * 纳税识别号
     */
    @ApiModelProperty(value = "纳税识别号")
    @Size(max = 128, message = "纳税识别号长度不能超过128")
    @TableField(value = "identification_number", condition = LIKE)
    @Excel(name = "纳税识别号")
    private String identificationNumber;

    /**
     * 是否上市 1是 0否
     */
    @ApiModelProperty(value = "是否上市 1是 0否")
    @TableField(value = "is_listed")
    @Excel(name = "是否上市 1是 0否")
    private Integer isListed;

    /**
     * 网址
     */
    @ApiModelProperty(value = "网址")
    @Size(max = 255, message = "网址长度不能超过255")
    @TableField(value = "website", condition = LIKE)
    @Excel(name = "网址")
    private String website;

    /**
     * 展商简介
     */
    @ApiModelProperty(value = "展商简介")
    @Size(max = 65535, message = "展商简介长度不能超过65535")
    @TableField(value = "introduction", condition = LIKE)
    @Excel(name = "展商简介")
    private String introduction;

    /**
     * 公司英文简介
     */
    @ApiModelProperty(value = "公司英文简介")
    @Size(max = 65535, message = "公司英文简介长度不能超过65535")
    @TableField(value = "en_introduction", condition = LIKE)
    @Excel(name = "公司英文简介")
    private String enIntroduction;

    /**
     * 产品简介
     */
    @ApiModelProperty(value = "产品简介")
    @Size(max = 65535, message = "产品简介长度不能超过65535")
    @TableField(value = "product_introduction", condition = LIKE)
    @Excel(name = "产品简介")
    private String productIntroduction;

    /**
     * 展品英文描述
     */
    @ApiModelProperty(value = "展品英文描述")
    @Size(max = 65535, message = "展品英文描述长度不能超过65535")
    @TableField(value = "en_product_introduction", condition = LIKE)
    @Excel(name = "展品英文描述")
    private String enProductIntroduction;

    /**
     * 公司认证
     */
    @ApiModelProperty(value = "公司认证")
    @Size(max = 100, message = "公司认证长度不能超过100")
    @TableField(value = "certification", condition = LIKE)
    @Excel(name = "公司认证")
    private String certification;

    /**
     * 3D展位链接
     */
    @ApiModelProperty(value = "3D展位链接")
    @Size(max = 100, message = "3D展位链接长度不能超过100")
    @TableField(value = "abbr_url", condition = LIKE)
    @Excel(name = "3D展位链接")
    private String abbrUrl;

    /**
     * 展商联系人姓名
     */
    @ApiModelProperty(value = "展商联系人姓名")
    @Size(max = 32, message = "展商联系人姓名长度不能超过32")
    @TableField(value = "contact_name", condition = LIKE)
    @Excel(name = "展商联系人姓名")
    private String contactName;

    /**
     * 展商联系人手机号码
     */
    @ApiModelProperty(value = "展商联系人手机号码")
    @Size(max = 32, message = "展商联系人手机号码长度不能超过32")
    @TableField(value = "contact_mobile", condition = LIKE)
    @Excel(name = "展商联系人手机号码")
    private String contactMobile;

    /**
     * 展商联系人邮箱
     */
    @ApiModelProperty(value = "展商联系人邮箱")
    @Size(max = 100, message = "展商联系人邮箱长度不能超过100")
    @TableField(value = "contact_email", condition = LIKE)
    @Excel(name = "展商联系人邮箱")
    private String contactEmail;

    /**
     * 展商会务联系人姓名
     */
    @ApiModelProperty(value = "展商会务联系人姓名")
    @Size(max = 32, message = "展商会务联系人姓名长度不能超过32")
    @TableField(value = "contact_work_name", condition = LIKE)
    @Excel(name = "展商会务联系人姓名")
    private String contactWorkName;

    /**
     * 展商会务联系人手机号码
     */
    @ApiModelProperty(value = "展商会务联系人手机号码")
    @Size(max = 32, message = "展商会务联系人手机号码长度不能超过32")
    @TableField(value = "contact_work_mobile", condition = LIKE)
    @Excel(name = "展商会务联系人手机号码")
    private String contactWorkMobile;

    /**
     * 展商会务联系人邮箱
     */
    @ApiModelProperty(value = "展商会务联系人邮箱")
    @Size(max = 100, message = "展商会务联系人邮箱长度不能超过100")
    @TableField(value = "contact_work_email", condition = LIKE)
    @Excel(name = "展商会务联系人邮箱")
    private String contactWorkEmail;

    /**
     * vr 跳转地址
     */
    @ApiModelProperty(value = "vr 跳转地址")
    @Size(max = 1200, message = "vr 跳转地址长度不能超过1200")
    @TableField(value = "vr_url", condition = LIKE)
    @Excel(name = "vr 跳转地址")
    private String vrUrl;

    /**
     * 是否生效(默认1：可用 0:不可用)
     */
    @ApiModelProperty(value = "是否生效(默认1：可用 0:不可用)")
    @TableField(value = "is_enabled")
    @Excel(name = "是否生效(默认1：可用 0:不可用)")
    private Integer isEnabled;

    /**
     * 是否删除(默认0：未删除 1:已删除)
     */
    @ApiModelProperty(value = "是否删除(默认0：未删除 1:已删除)")
    @TableField(value = "is_deleted")
    @Excel(name = "是否删除(默认0：未删除 1:已删除)")
    private Integer isDeleted;


    @Builder
    public CompanyError(Long id, Long createdBy, LocalDateTime createTime, Long updatedBy, LocalDateTime updateTime, 
                    Long projectId, Long conflictId, String errorType, String errorMsg, Integer isAuthentication, 
                    String name, String enName, String address, String enAddress, Long countryId, Long provinceId, 
                    Long cityId, String logoImage, String wechatAdvertsVideo, String advertsVideo, String advertsVideoImage, String advertsImage, 
                    String email, String telephone, String fax, String brand, String enBrand, String zipCode, 
                    String companyScale, String registeredCapital, String identificationNumber, Integer isListed, String website, String introduction, 
                    String enIntroduction, String productIntroduction, String enProductIntroduction, String certification, String abbrUrl, String contactName, 
                    String contactMobile, String contactEmail, String contactWorkName, String contactWorkMobile, String contactWorkEmail, String vrUrl, 
                    Integer isEnabled, Integer isDeleted) {
        this.id = id;
        this.createdBy = createdBy;
        this.createTime = createTime;
        this.updatedBy = updatedBy;
        this.updateTime = updateTime;
        this.projectId = projectId;
        this.conflictId = conflictId;
        this.errorType = errorType;
        this.errorMsg = errorMsg;
        this.isAuthentication = isAuthentication;
        this.name = name;
        this.enName = enName;
        this.address = address;
        this.enAddress = enAddress;
        this.countryId = countryId;
        this.provinceId = provinceId;
        this.cityId = cityId;
        this.logoImage = logoImage;
        this.wechatAdvertsVideo = wechatAdvertsVideo;
        this.advertsVideo = advertsVideo;
        this.advertsVideoImage = advertsVideoImage;
        this.advertsImage = advertsImage;
        this.email = email;
        this.telephone = telephone;
        this.fax = fax;
        this.brand = brand;
        this.enBrand = enBrand;
        this.zipCode = zipCode;
        this.companyScale = companyScale;
        this.registeredCapital = registeredCapital;
        this.identificationNumber = identificationNumber;
        this.isListed = isListed;
        this.website = website;
        this.introduction = introduction;
        this.enIntroduction = enIntroduction;
        this.productIntroduction = productIntroduction;
        this.enProductIntroduction = enProductIntroduction;
        this.certification = certification;
        this.abbrUrl = abbrUrl;
        this.contactName = contactName;
        this.contactMobile = contactMobile;
        this.contactEmail = contactEmail;
        this.contactWorkName = contactWorkName;
        this.contactWorkMobile = contactWorkMobile;
        this.contactWorkEmail = contactWorkEmail;
        this.vrUrl = vrUrl;
        this.isEnabled = isEnabled;
        this.isDeleted = isDeleted;
    }

}
